package exception;

import file.Test;

/**
 * 面试题
 * 分别说明:
 * final finally finalize   区别
 * finalize方法是Object中定义的方法,该方法是一个对象生命周期中的最后一个方法
 * 当GC即将释放一个对象前,会调用该对象的finalize方法,调用后该对象被释放.需要注意
 * 若需要重写这个方法,里面不应当有耗时的操作,会影响GC操作
 */
public class FinallyDemo3 {
    public static void main(String[] args) {
        System.out.println(test("0") + "," + test(null) + "," + test("")
        );
    }

    public static int test(String str) {
        try {
            return str.charAt(0) - '0';
        } catch (NullPointerException e) {
            return 1;
        } catch (Exception e) {
            return 2;
        } finally {
            return 3;
        }
    }
}
